package com.zhoukx.nio;

import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 实例要求:
 * 使用 FileChannel(通道) 和 方法  read , write，完成文件的拷贝
 */
public class NIOFilerChannerl03 {

    public static void main(String[] args) throws IOException {

        // 先创建一个输入的管道
        FileInputStream fileInputStream = new FileInputStream("E:\\work_space\\netty\\nettyPro\\src\\1.txt");
        FileChannel channel = fileInputStream.getChannel();
        // 在创建一个输出的管道
        FileOutputStream fileOutputStream = new FileOutputStream("E:\\work_space\\netty\\nettyPro\\src\\2.txt");
        FileChannel channel1 = fileOutputStream.getChannel();

        // 创建一个buffer缓存区
        ByteBuffer allocate = ByteBuffer.allocate(1024);

        // 读取文件,写到缓存
        while (true) {
            // 清空buffer,充值属性
            allocate.clear();
            int read = channel.read(allocate);
            System.out.println(read);
            if (read == -1) {
                break;
            }
            // 反转,将buffer的数据写到channel1 管道中
            allocate.flip();
            channel1.write(allocate);

        }

        fileInputStream.close();
        fileOutputStream.close();

    }
}
